﻿using System.Collections.Generic;
using System.ServiceModel;
using StockholmsStad.Runtime.Serialization.DataContract;
using StockholmsStad.Runtime.Serialization.DataContract.Enums;
using StockholmsStad.Utilities.Exceptions;
using System;

namespace StockholmsStad.ServiceModel.Interfaces
{
    /// <summary>
    /// 
    /// </summary>
    [ServiceContract]
    public interface IBookingService
    {
        //TODO Flytta alla metoder som har men Booking till denna tjänst

        /// <summary>
        /// Operationskontraktet som hämtar tidsblock för ett givet datumintervall. 
        /// </summary>
        /// <param name="user">Den inloggade användaren (<see cref="User"/>).</param>
        /// <param name="fromDate"></param>
        /// <param name="toDate"></param>
        /// <returns>En lista med de aktuella tidsblocken <see cref="TimeBlock"/>.</returns>
        [OperationContract]
        [FaultContract(typeof(StockholmStadApplicationErrorFault))]
        [FaultContract(typeof(StockholmStadSystemErrorFault))]
        IList<TimeBlock> GetFreeTimeBlockDateTimes(User user, DateTime fromDate, DateTime toDate);

    }
}
